package day230323;

import java.util.Scanner;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/3/25 9:39
 */
public class Main2 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] array = new int[n]; // 初始数组
        for (int i = 0; i < array.length; i++) {
            array[i] = scan.nextInt();
        }
        // 定义 dp[i] 表示截至到 array[i] 的最大子数组和
        // dp[i] = Math.max(dp[i-1]+array[i], array[i])
        // res = max(dp[i]);
        int curSum = array[0]; // 优化空间, 避免 dp 数组的创建
        int res = curSum; // 最终需要返回的结果, 即最大数组的和
        for (int i = 1; i < array.length; i++) {
            curSum = Math.max(curSum + array[i], array[i]);
            // 判断是否需要更新答案
            res = Math.max(curSum, res);
        }
        // 打印最大和
        System.out.print(res);
    }
}
